﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PTTK_HTTT_06.DAO;
using System.Security.Cryptography;

namespace PTTK_HTTT_06.BUS
{
    public class NHAN_VIEN
    {
        public int MaNhanVien { get; set; }
        public int MaBoPhan { get; set; }
        public string TenNhanVien { get; set; }
        public string DiaChi { get; set; }
        public string CMND { get; set; }
        public string TenDangNhap { get; set; }
        public string MatKhau { get; set; }
        public bool TinhTrangKhoa { get; set; }


        #region public NHAN_VIEN DangNhap()
        public NHAN_VIEN DangNhap()
        {
            //Ma khoa mat khau
            MatKhau = MaHoaMatKhau(MatKhau);

            //Kiem tra tai khoan co ton tai hay khong
            int MaTaiKhoan = NHAN_VIEN_DB.KiemTraTaiKhoan(TenDangNhap, MatKhau);
            if (MaTaiKhoan >= 0)
            {
                if (MaTaiKhoan == 0)
                {
                    MaNhanVien = 0;
                    MaBoPhan = 0;
                    TenNhanVien = "Quản lý hệ thống";
                    TenDangNhap = "Admin";
                    return this;
                }
                else
                {
                    //Kiem tra tinh trang tai khoan
                    if (NHAN_VIEN_DB.KiemTraTinhTrangKhoa(MaTaiKhoan))
                    {
                        //return null;
                        throw new Exception("Tài khoản đã bị khóa!.");
                    }
                    else
                    {
                        //Lay thong tin tai khoan
                        var nv = NHAN_VIEN_DB.LayThongTin(MaTaiKhoan);
                        if (nv == null)
                        {
                            //return null;
                            throw new Exception("Có lỗi xảy ra!.");
                        }
                        return nv;
                    }
                }
                
            }
            else {
                //return null;
                throw new Exception("Sai tên đăng nhập hoặc mật khẩu!.");
            }
            
        }
        #endregion

        #region string MaHoaMatKhau(string input)
        private string MaHoaMatKhau(string input)
        {
            // step 1, calculate MD5 hash from input
            MD5 md5 = System.Security.Cryptography.MD5.Create();
            byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
            byte[] hash = md5.ComputeHash(inputBytes);

            // step 2, convert byte array to hex string
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < hash.Length; i++)
            {
                sb.Append(hash[i].ToString("x2"));
            }
            return sb.ToString();
        }
        #endregion

    }
}
